//入口文件数组
//import { pluginConfigFn } from './src/config/plugins.js';
let pluginConfigFn = require('./src/config/plugins.js');
let path = require('path');

const webpack = require('webpack');
let {
	entry,
	plugins
} = pluginConfigFn(__dirname);
module.exports = {
	//入口文件
	entry: entry,
	output: {
		path: __dirname + '/dist',
		filename: "js/[name].bundle.js"
	},
	plugins: [...plugins,new webpack.HotModuleReplacementPlugin()],
	module: {
		rules: [{
				test: /\.m?js$/,
				exclude: /(node_modules|bower_components)/,
				//			exclude:'./node_modules/',//不处理该文件下的东西
				//			include:__dirname+'/src/',
				include: path.resolve(__dirname, 'src'),
				use: {
					loader: 'babel-loader',
					options: {
						presets: ['@babel/preset-env']
					}
				}
			}, {
				test: /\.css$/,
				use: ['style-loader',
					{
						loader: 'css-loader',
						options: {
							importLoaders: 1
						}
					},
					'postcss-loader'
				]
			}, {
				test: /\.less$/,
				use: ['style-loader', 'css-loader', 'postcss-loader', 'less-loader']
			},
			{
				test: /\.scss$/,
				use: ['style-loader', 'css-loader', 'postcss-loader', 'sass-loader']
			}, {
				test: /\.html$/,
				loader: "html-loader"
			}, {
				test: /\.ejs$/,
				loader: "ejs-loader"
			}, {
				test: /\.(png|jpg|gif|svg)$/,
				use: [{
						loader: 'file-loader',
						options: {
							outputPath: 'img/'
						}
					},
					'image-webpack-loader'
				]
			}
		]

	},
	devServer:{
		contentBase: path.resolve(__dirname, 'dist'),//告诉服务器从哪里提供内容。只有在你想要提供静态文件时才需要。就是打包后的目录
		inline: true,//内联自动刷新
		hot: false,//模块热替换机制
		hotOnly:false,
		host: '192.168.1.125', //我的局域网ip
		open:true,//启动且第一次构建完时自动用你系统上默认的浏览器去打开要开发的网页。
		openPage:'a.html',//指定第一次启动时的页面，目录指定是contentBase
		disableHostCheck:true,//配置项用于配置是否关闭用于DNS重绑定的HTTP请求的host检查。DevServer 默认只接受来自本地的请求，关闭后可以接受来自任何 HOST 的请求。 它通常用于搭配 --host 0.0.0.0 使用，因为你想要其它设备访问你本地的服务，但访问时是直接通过 IP 地址访问而不是 HOST 访问，所以需要关闭 HOST 检查。
		clientLogLevel: 'info',// 配置在客户端的日志等级，这会影响到你在浏览器开发者工具控制台里看到的日志内容。 可取如下之一的值 none | error | warning | info。 默认为 info 级别，即输出所有类型的日志，设置成 none 可以不输出任何日志。
		compress: true,//这是一个布尔型的值，当它被设置为true的时候对所有的服务器资源采用gzip压缩 采用gzip压缩的优点和缺点： 优点：对JS，CSS资源的压缩率很高，可以极大得提高文件传输的速率，从而提升web性能 缺点：服务端要对文件进行压缩，而客户端要进行解压，增加了两边的负载
		overlay:true,//当存在编译器错误或警告时，在浏览器中显示全屏覆盖。
		progress:true //显示打包进度
	},
	/**
	 * 用vue cli 之类的热更新  是基于loader实现的   所以嘛  jquery梭哈就打开watch  重新编译加载页面好了  不用热更新
	 */
	watch: true,
	watchOptions: {
        ignored: /node_modules/, //忽略不用监听变更的目录
        aggregateTimeout: 500, //防止重复保存频繁重新编译,500毫米内重复保存不打包
        poll:false //每秒询问的文件变更的次数
    }

}